package com.clstu.threaduse;

public class Thread01 { //可以在终端用Jconsole工具来链接Thread01查看具体情况
    //主线程和子线程一起执行
    //可以看到main线程结束了整个进程也仍然没有结束，子线程如果不执行结束的话这个进程仍然活着

    public static void main(String[] args) throws InterruptedException { //主线程
        Cat cat = new Cat();
        /*
        start()执行步骤
        1.
        public void start(){
           start0();
        }
        2.
        //真正实现多线程是start0()调用run实现的
        public void start0();//是通过JVM调用，底层是c/c++实现的
         */
        cat.start();//可以通过start调用run 子线程
        //cat.run();//如果直接调用run()方法不会并行执行，而是串行化执行


        System.out.println("主线程继续执行========"+Thread.currentThread().getName());
        for (int i = 0; i < 50; i++) {
            System.out.println("主线程======="+i);
            Thread.sleep(1000);
        }
    }
}
class Cat extends Thread{//当一个类继承了Thread类之后，该类就可以当做线程使用
    int times;

    //run来自 Runnable类run方法。，Thread 类也实现了 Runnable 类
    @Override
    public void run() {//可以写上自己的业务逻辑

        while (true) {
            System.out.println("喵喵，我是一只小猫咪~~"+(++times));
            try {
                Thread.sleep(1000);//睡1000毫秒，Thread提供的方法
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            if(times==70) break;
        }
    }
}